import OSS from 'ali-oss'

// async function multipartUpload (file) {
//   try {
//     // 填写Object完整路径。Object完整路径中不能包含Bucket名称。
//     // 您可以通过自定义文件名（例如exampleobject.txt）或目录（例如exampledir/exampleobject.txt）的形式，实现将文件上传到当前Bucket或Bucket中的指定目录。
//     const result = await client.multipartUpload('exampleobject.txt', file, {
//       progress: function (p, checkpoint) {
//         // 断点记录点。浏览器重启后无法直接继续上传，您需要手动触发上传操作。
//         tempCheckpoint = checkpoint;
//       },
//       meta: { year: 2020, people: 'test' },
//     })
//   } catch(e){
//     console.log(e);
//   }
// }

export default class MultipartUpload{
  constructor({
                region,
                accessKeyId,
                accessKeySecret=null,
                stsToken=null,
                bucket,
              },file,name,p){
    this.name=name;
    this.p=p;
    this.file=file;
    this.tempCheckpoint=null;
    this.option={
      region,
      accessKeyId,
      accessKeySecret,
      stsToken,
      bucket
    }
    console.log(this.option)
    // this.client = new OSS({
    //   // yourRegion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
    //   region: 'oss-cn-beijing',
    //   // 从STS服务获取的临时访问密钥（AccessKey ID和AccessKey Secret）。
    //   accessKeyId: 'LTAI5tNJmQ6A9EnUPSdYLvVv',
    //   accessKeySecret: 'ytVNR8TxLkjGd1HfrFzGtr7epwedh4',
    //   // 填写Bucket名称，例如examplebucket。
    //   bucket: 'longrenshouyu'
    // });
    this.client = new OSS(this.option);
  }
  getFile(){
    return this.file;
  }
  getTempCheckpoint(){
    return this.tempCheckpoint;
  }
  getClient(){
    return this.client;
  }
  async startToUpload(url,callBack=(p,checkPoint)=>{}){
    try {
      let _this=this;
      // 填写Object完整路径。Object完整路径中不能包含Bucket名称。
      // 您可以通过自定义文件名（例如exampleobject.txt）或目录（例如exampledir/exampleobject.txt）的形式，实现将文件上传到当前Bucket或Bucket中的指定目录。
      const result = await this.client.multipartUpload(this.name, this.file, {
        progress: function (p, checkpoint) {
          console.log(p)
          if(_this.p!=null)_this.p.value=p;
          if(callBack!=null&&typeof callBack =='function'){
            callBack(p,checkpoint)
          }
          // 断点记录点。浏览器重启后无法直接继续上传，您需要手动触发上传操作。
          _this.tempCheckpoint = checkpoint;
        },
        meta: { year: 2020, people: 'test' },
      })
      if(url!=null)url.value= 'http://'+_this.option.bucket+'.'+_this.option.region+'.aliyuncs.com/'+this.name;
    } catch(e){
      console.log(e);
    }
  }
  async continueUpload(){
    if(this.tempCheckpoint==null){
      await this.startToUpload();
    }else{
      try {
        let _this=this;
        const result = await this.client.multipartUpload(this.name, this.file, {
          progress: function (p, checkpoint) {
            _this.tempCheckpoint = checkpoint;
          },
          checkpoint: this.tempCheckpoint,
          meta: { year: 2020, people: 'test' }
        })
      } catch (e) {
        console.log(e);
      }
    }
  }
  stopUpload(){
    this.client.cancel();
  }
}